Projects
Projects are the top-level organizational container for a BindAI solution. AProject groups applications, shared tools, workflows, scheduling, and project-level configuration. It also exposes placeholders for project-wide knowledge, memories, and secrets.
Projects are provided by the bindai-project package.
What a Project Contains
A BindAI project currently provides these resources:- Applications
- Shared tools
- Workflows
- Workflow scheduling
- Project configuration
- Project-level knowledge storage placeholder
- Project-level memory storage placeholder
- Project-level secrets storage placeholder
knowledge, memories, and secrets, are currently generic dictionaries intended as extension points.
Project Configuration
EveryProject is created with a ProjectConfiguration.
ProjectConfiguration is a dataclass using slots.
The project name is exposed through:
project.configuration.name.
Applications
Applications are the main execution containers inside a project. A project stores applications by name:Shared Tools
Projects contain a sharedToolRegistry.
Tools can be registered at project level:
ToolRegistry.
The Project API does not define a separate tool implementation system; it provides a convenient project-level registry.
Workflows
Projects contain aWorkflowRegistry.
Workflows can be registered with:
WorkflowScheduler:
Scheduling
Project scheduling is currently backed byWorkflowScheduler.
A schedule can be registered through:
bindai-automation worker system.
The Project package provides workflow scheduling primitives, while the Automation package provides automation definitions, triggers, background execution, state, and run history.
Knowledge
Projects expose a project-levelknowledge collection:
Project.knowledge provides those capabilities automatically.
Memories
Projects also expose:Project.memories is currently only a generic project-owned collection.
Secrets
Projects expose:Project Execution
A project provides convenience methods for executing an agent through a named application.Run
- Looks up the application by name.
- Calls the application’s
run()method. - Returns the application’s result.
Stream
Streaming is available through:stream() method.
The exact streaming behavior therefore depends on the application’s implementation.
Python Helpers
Project provides several convenience methods for working with its applications.
Membership
Length
Iteration
Typical Project Structure
A project can be composed like this:Projects and Applications
Projects and applications have different responsibilities.Project
The project provides:- project identity
- application registration
- shared tool registry
- workflow registry
- workflow scheduler
- project-level configuration
- project-level extension collections
- application execution helpers
Application
An application provides the actual application runtime and its configured agents and execution behavior. This separation allows a project to contain multiple applications:Multiple Applications
A project can contain multiple applications:Workflows and Applications
Projects can contain both applications and workflows. They serve different purposes:Connections
External service integrations are provided by thebindai-connections package rather than being implemented directly by Project.
Current BindAI connection types include:
- Webhook
- GitHub
- Slack
- Notion
- Jira
- Discord
- Resend
- Vercel
- Netlify
- Google Sheets
- Google Docs
- Gmail
- Google Drive
Project-Level Resource Sharing
The project provides a natural scope for resources that should be shared across applications. For example:ToolRegistry.
Applications retain their own application-level configuration and runtime state.
Isolation
Applications are stored independently by name:Project API
The current public Project API includes:Properties
Application methods
Tool methods
Workflow methods
Scheduling
Execution
Python helpers
Project Package
Projects are provided by thebindai-project package.
The package currently contains the core project components:
Projects in the REST API
The BindAI REST API exposes configured projects through:Project object in the Python process.
The REST API therefore acts as an interface to explicitly configured projects.
Docker and Deployment
Projects can be used in normal Python deployments as well as through the BindAI API Docker image. For API deployment, see: The current API deployment model uses an in-process application and worker model. Distributed project execution, durable queues, and Kubernetes deployment are future infrastructure concerns and are not required for the current v0.1 project model.Recommended Usage
UseProject when you need a clear top-level container for related BindAI applications and shared resources.
A typical composition is:
Current Scope
The current Project implementation is intentionally lightweight. It provides:- project configuration
- application registration
- shared tools
- workflow registration
- workflow scheduling
- project-level extension collections
- application execution helpers
- a persistent project database
- a project-level ORM
- automatic resource discovery
- a built-in secret manager
- a built-in knowledge database
- a built-in project memory database
- automatic connection management
- distributed execution
- queue-backed project workers
- multi-tenant project isolation
- project-level authentication or authorization
Current v0.1 Role
For BindAI v0.1,Project should be viewed as the top-level Python composition container for related applications and shared workflow resources.
The project model is useful for:
- organizing multiple applications
- registering shared tools
- grouping workflows
- managing workflow schedules
- providing project identity and configuration
- exposing a clean root object for application execution
- integrating projects with the BindAI REST API
